package com.drug.mingkang.mapper;


import com.drug.mingkang.model.HqInventory;
import com.drug.mingkang.model.HqWarehousing;
import com.drug.mingkang.model.vo.*;
import com.drug.mingkang.model.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 总公司库存表(HqInventory)表数据库访问层
 *
 * @author wenchangjian
 * @since 2020-08-11 12:00:13
 */
public interface HqInventoryMapper {

    /**
     * 质检入库
     * @param list
     * @return
     */
    int quality(List<HqInventory> list);

    /**
     * 通过ID查询单条数据
     *
     * @param inventoryId 主键
     * @return 实例对象
     */
    HqInventory queryById(String inventoryId);

    /**
     * 根据材料id查找材料库存
     * @param materialId
     * @return
     */
    HqInventory queryByMaterialId(String materialId);

    HqInventory queryByDrugId(String drugId);


    /**
     * 查询总公司药品行数据
     * @param inventoryVo 库存Vo
     * @return 对象列表
     */
    List<HqInventory> queryAllByLimit(InventoryVo inventoryVo);


    /**
     * 查询总公司药品总条数
     * @param inventoryVo
     * @return
     */
    int count(InventoryVo inventoryVo);

    /**
     * 通过实体作为筛选条件查询
     *
     * @param
     * @return 对象列表
     */
    List<HqInventory> queryAll();




    /**
     * 新增数据
     *
     * @param hqInventory 实例对象
     * @return 影响行数
     */
    int insert(HqInventory hqInventory);

    /**
     * 修改数据
     *
     * @param hqInventory 实例对象
     * @return 影响行数
     */
    int update(HqInventory hqInventory);

    /**
     * 通过主键删除数据
     *
     * @param inventoryId 主键
     * @return 影响行数
     */
    int deleteById(String inventoryId);

    HqInventory selectMaterialId(String materialId);

    /**
     * 批量修改
     * @param list
     * @return
     */
    int updateBatch(List<HqInventory> list);

    int updateByDrug(List<HqInventory> list);

    List<MaterialInventoryVo> selectMaterialAll(MaterialInventoryVo vo);

    int selectMaterialCount(MaterialInventoryVo vo);

    List<MaterialInventoryDetailVo> findMaterialsDetails(MaterialInventoryDetailVo vo);

    int findMaterialsDetailsCount(MaterialInventoryDetailVo vo);


    List<DrugInventoryDetailVo> findDrugDetails(DrugInventoryDetailVo vo);

    int findDrugDetailsCount(DrugInventoryDetailVo vo);

    int findDrugDetailsCountA(DrugInventoryDetailVo vo, String id);

    List<DrugInventoryDetailVo> findDrugDetailsA(DrugInventoryDetailVo vo, String id);

    /**
     * 查询总公司 药品库存预警
     * @param YpkcyjNum
     * @param YpkcyjNum
     * @param companyId
     * @param page
     * @param limit
     * @return
     */
    List<HqDrugVo> findAllDrugEarlyWarning(@Param("YpkcyjNum") int YpkcyjNum,
                                           @Param("companyId") String companyId,
                                            @Param("page") int page,
                                            @Param("limit") int limit);

    /**
     * 查询总公司 药品库存预警条数
     * @param YpkcyjNum
     * @param companyId
     * @return
     */
    Integer findAllDrugEarlyWarningCount(@Param("YpkcyjNum") int YpkcyjNum,
                                         @Param("companyId") String companyId);

    List<PurchaseMaterialVo> findMaterialsWarning(PurchaseMaterialVo vo,int num);

    int findMaterialsWarningCount(PurchaseMaterialVo vo,int num);

    int findCount(int ypkc,int yclkc);

    int findCounts(String companyId,int ypkc);

    HqInventory queryDrugId (String drugId);
}